<?php

namespace app\common\helper;

class FileHelper
{
    /**
     * 删除目录下的所有文件，但不删除目录
     *
     * @param $dirPath
     * @return bool
     */
    public static function deleteDirectoryOnlyFiles($dirPath)
    {
        if (!is_dir($dirPath)) {
            return false;
        }
        $handle = opendir($dirPath);
        if (!$handle) {
            return false;
        }
        while (false !== ($item = readdir($handle))) {
            if ($item != "." && $item != "..") {
                $path = $dirPath . DIRECTORY_SEPARATOR . $item;
                if (is_file($path)) {
                    // 如果是文件，则删除
                    if (!unlink($path)) {
                        closedir($handle);
                        return false; // 删除失败
                    }
                }
            }
        }
        closedir($handle);
        return true;
    }

    /**
     * 删除目录及其下的所有目录和文件
     *
     * @param $dirPath
     * @return bool
     */
    public static function deleteDirectoryRecursive($dirPath)
    {
        if (!is_dir($dirPath)) {
            return false;
        }
        $handle = opendir($dirPath);
        if (!$handle) {
            return false;
        }

        while (false !== ($item = readdir($handle))) {
            if ($item != "." && $item != "..") {
                $path = $dirPath . DIRECTORY_SEPARATOR . $item;
                if (is_dir($path)) {
                    // 如果是子目录，则递归删除
                    if (!self::deleteDirectoryRecursive($path)) {
                        closedir($handle);
                        return false; // 递归删除失败
                    }
                } else {
                    // 如果是文件，则删除
                    if (!unlink($path)) {
                        closedir($handle);
                        return false; // 删除失败
                    }
                }
            }
        }
        closedir($handle);

        // 删除空目录本身
        if (!rmdir($dirPath)) {
            return false; // 删除目录失败
        }

        return true;
    }
}